// var没有块级作用于
if (true) {
  var foo = 'lanpang';
}
console.log(foo); // lanpang

// if (true) {
//   let name = 'lanpang';
// }
// console.log(name); // error name not defined

// var eles = [{}, {}, {}];
// for (var i = 0; i < eles.length; i++) {
//   eles[i].onclick = function () {
//     console.log(i);
//   }
// }

// eles[0].onclick(); // 3

var eles = [{}, {}, {}];
for (var i = 0; i < eles.length; i++) {
  eles[i].onclick = (function (i) {
    return function () {
      console.log(i);
    }
  })(i);
}
console.log(eles);
eles[0].onclick(); // 3

// for循环里其实是两个包裹的父子作用域
for (let i = 0; i < 3; i++) {
  let i = 666;
  console.log(i); // 666
}

// const 常量 常量指的是变量的指针是不变的 但变量指针指向的数据的属性是可以变的
const obj = {name: 'lanpang'};
obj.name = 'wang';
console.log(obj.name); // 'wang'
obj = {name: 'wang'}; // error const声明的变量的指针不可以改变